/**
 * 门店管理 API 服务
 */
class StoreApi {
    constructor(apiService) {
        this.api = apiService;
    }

    /**
     * 获取门店列表
     * @param {Object} params - 查询参数
     * @returns {Promise}
     */
    getList(params = {}) {
        return this.api.get('/admin/store/list', params);
    }

    /**
     * 获取门店详情
     * @param {number} id - 门店ID
     * @returns {Promise}
     */
    getDetail(id) {
        return this.api.get(`/admin/store/${id}`);
    }

    /**
     * 更新门店状态
     * @param {Object} data - 更新数据
     * @returns {Promise}
     */
    updateStatus(data) {
        return this.api.post('/admin/store/update-status', data);
    }

    /**
     * 获取省市区地址数据
     * @param {Object} params - 查询参数
     * @returns {Promise}
     */
    getAddresses(params = {}) {
        return this.api.post('/admin/store/address', params);
    }

    /**
     * 获取省份列表
     * @returns {Promise}
     */
    getProvinces() {
        return this.getAddresses({ level: 1 });
    }

    /**
     * 获取城市列表
     * @param {number} provinceId - 省份ID
     * @returns {Promise}
     */
    getCities(provinceId) {
        return this.getAddresses({ level: 2, parent_id: provinceId });
    }

    /**
     * 获取区县列表
     * @param {number} cityId - 城市ID
     * @returns {Promise}
     */
    getDistricts(cityId) {
        return this.getAddresses({ level: 3, parent_id: cityId });
    }

    /**
     * 获取门店核销员列表
     * @param {number} storeId - 门店ID
     * @param {Object} params - 查询参数
     * @returns {Promise}
     */
    getClerks(storeId, params = {}) {
         return this.api.get(`/admin/store/${storeId}/clerks`, { params });
     }

    /**
     * 更新核销员状态
     * @param {Object} data - 更新数据
     * @returns {Promise}
     */
    updateClerkStatus(data) {
        return this.api.post('/admin/store/clerk/update-status', data);
    }

    /**
     * 修改门店密码
     * @param {Object} data - 密码数据（包含id字段）
     * @returns {Promise}
     */
    updatePassword(data) {
        const storeId = data.id;
        return this.api.post(`/admin/store/${storeId}/update-password`, data);
    }

    /**
     * 获取门店收款二维码
     * @param {number} storeId - 门店ID
     * @param {number} type - 二维码类型 (1:公众号, 2:小程序)
     * @returns {Promise}
     */
    getQrCode(storeId, type = 1) {
        return this.api.post('/admin/store/get-collection-code', {
            store_id: storeId,
            type: type
        });
    }

    /**
     * 获取分组列表
     * @returns {Promise}
     */
    getGroups() {
        return this.api.get('/admin/store/groups');
    }

    /**
     * 更新门店分组
     * @param {Object} data - 分组数据
     * @returns {Promise}
     */
    updateGroup(data) {
        return this.api.post('/admin/store/update-group', data);
    }

    /**
     * 获取置换分组列表
     * @returns {Promise}
     */
    getSwitchGroups(data) {
        return this.api.post('/admin/stores/switch-groups', data);
    }

    /**
     * 获取分组属性列表
     * @param {number} groupId - 分组ID
     * @returns {Promise}
     */
    getGroupProperties(groupId) {
        return this.api.get(`/admin/stores/groups/${groupId}/properties`);
    }

    /**
     * 获取门店分组关系
     * @param {number} storeId - 门店ID
     * @param {number} groupId - 分组ID
     * @returns {Promise}
     */
    getStoreGroupRelations(storeId, groupId) {
        return this.api.get(`/admin/store/${storeId}/switch-groups/${groupId}/relations`);
    }

    /**
     * 更新门店分组关系
     * @param {number} storeId - 门店ID
     * @param {Object} data - 关系数据
     * @returns {Promise}
     */
    updateStoreGroupRelations(storeId, data) {
        return this.api.post(`/admin/store/${storeId}/switch-groups/relations`, data);
    }
    
    getCategories() {
        return this.api.post(`/admin/store/store-categories`);
    }

    /**
     * 获取授信额度审核列表
     * @param {Object} params
     * @returns {Promise}
     */
    getQuotaAudits(params = {}) {
        return this.api.post('/admin/store/quota-audit/list', params);
    }

    /**
     * 授信额度审核通过
     * @param {number} id
     * @returns {Promise}
     */
    approveQuotaAudit(id) {
        return this.api.post(`/admin/store/quota-audit/${id}/approve`);
    }

    /**
     * 授信额度审核拒绝
     * @param {number} id
     * @param {Object} data
     * @returns {Promise}
     */
    rejectQuotaAudit(id, data = {}) {
        return this.api.post(`/admin/store/quota-audit/${id}/reject`, data);
    }
}

// 创建全局实例
window.storeApi = new StoreApi(window.api);
